Skip to content

Open the 2.3 cycle, and record the ledger roster AGENTS.md missed - #480

Merged
derek73 merged 1 commit into
masterfrom
chore/open-the-2.3-cycle
Sep 1, 2026
Merged

Open the 2.3 cycle, and record the ledger roster AGENTS.md missed#480
derek73 merged 1 commit into
masterfrom
chore/open-the-2.3-cycle

Conversation

@derek73

@derek73 derek73 commented Sep 1, 2026

Copy link
Copy Markdown
Owner

Release checklist steps 8 and 9, run after 2.2.0 went to PyPI.

Opening the cycle

  • tools/differential/expected_since_2.2.0.toml, opened empty. DEFAULT_BASELINE and the ledger are coupled — _allowlist_for treats a missing file as a hard error, on the reasoning that an absent ledger classifies nothing and would make every diff report as unexplained — so the baseline cannot advance without it.
  • DEFAULT_BASELINE 2.1.0 → 2.2.0 in compare.py.
  • VERSION = (2, 3, 0), PRE_RELEASE = "dev", so an install from master normalizes to 2.3.0.dev0 — above 2.2.0, below 2.3.0, and never able to masquerade as the release it precedes. The docstring's own worked example moved with it.
  • * 2.3.0 - Unreleased opened at the top of the release log.

CITATION.cff deliberately stays at 2.2.0: it names the last citable released artifact and is meant to lag for the whole cycle.

The roster AGENTS.md missed

Step 8 named four rosters to enrol a new ledger in. I hit a fifth — _CROSS_RULE_WINNERS — as a red run after the other registrations were already in, which is the worst time to find it.

Rather than just add the missing line, I measured which rosters are actually mandatory:

roster keyed by required for every ledger?
_SPAN_BEARING_RULES filename yes (equality)
_CORPUS_CLAIMS filename yes (equality)
_CROSS_RULE_WINNERS filename yes (equality, since #452)
_HONORIFIC_SOURCES rule content only if such a rule exists
_LATIN_ALTERNATION_SOURCES rule content only if such a rule exists

Step 8 said "enrol in _CORPUS_CLAIMS always, and in the others where they apply", which is wrong for two of the five, and it had _HONORIFIC_SOURCES filed among the mandatory ones. Rewritten under Required, by filename / Conditional, by rule content headings, with _CROSS_RULE_WINNERS added and #452's reason for its equality check recorded — a ledger with no rows had been indistinguishable from one needing none.

Each roster does fail loudly and name itself, so this is self-correcting; but it is three separate red runs if you add them one at a time, which is what the rewrite is meant to prevent.

Also records, at _CORPUS_CLAIMS, what a pure corpus rename looks like there — names unchanged, roles unchanged, digest moved. That came up renaming de Mesnil JuanJean during the release, and the guard's own message explains a growing count but says nothing about a moving digest.

Verification

  • 6,198 tests; mypy and ruff clean; docs build clean
  • Gate against the newly published 2.2.0: intentional diffs: 0, unexplained: 0 — master is byte-identical to what shipped, the correct reading on day one of a cycle
  • 1.4.0 and 2.1.0 still exit 0, at 226 and 106 intentional diffs

🤖 Generated with Claude Code

…issed

Release checklist steps 8 and 9, run after 2.2.0 went to PyPI.

- expected_since_2.2.0.toml, opened empty. DEFAULT_BASELINE and the
  ledger are coupled: _allowlist_for treats a missing file as a hard
  error, so the baseline cannot advance without it.
- compare.py DEFAULT_BASELINE 2.1.0 -> 2.2.0.
- VERSION (2,3,0) with PRE_RELEASE 'dev', so an install from master
  normalizes to 2.3.0.dev0 -- above 2.2.0, below 2.3.0, and never able
  to masquerade as the release it precedes. The docstring's own example
  moved with it. CITATION.cff stays at 2.2.0 by design: it names the
  last citable RELEASED artifact and lags for the whole cycle.
- "* 2.3.0 - Unreleased" opened at the top of the release log.

AGENTS.md step 8 named four rosters to enrol a new ledger in and I hit a
fifth, _CROSS_RULE_WINNERS, as a red run after the other registrations
were already in. Measured which are mandatory rather than guessing:
THREE are keyed by filename and asserted by EQUALITY, so every ledger
must appear even while empty (_SPAN_BEARING_RULES, _CORPUS_CLAIMS,
_CROSS_RULE_WINNERS), and TWO are keyed by rule content and genuinely
conditional (_HONORIFIC_SOURCES, _LATIN_ALTERNATION_SOURCES). Step 8
said "_CORPUS_CLAIMS always, and the others where they apply", which is
wrong for two of the five and had _HONORIFIC_SOURCES filed with the
mandatory ones. Rewritten under Required/Conditional headings, with
_CROSS_RULE_WINNERS added and #452's reason for its equality check.

Also records, at _CORPUS_CLAIMS, what a pure corpus RENAME looks like
there -- names unchanged, roles unchanged, digest moved -- since that
came up renaming de Mesnil Juan to Jean and the guard's message explains
a growing count but not a moving digest.

Verified: 6198 tests, mypy and ruff clean, docs clean. The gate against
the newly published 2.2.0 reports intentional diffs 0, unexplained 0 --
master is byte-identical to what shipped, which is the correct reading
on day one. 1.4.0 and 2.1.0 exit 0 at 226 and 106.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@derek73 derek73 added docs Documentation fixes and updates tooling labels Sep 1, 2026
@derek73 derek73 self-assigned this Sep 1, 2026
@derek73 derek73 added this to the v2.3 milestone Sep 1, 2026
@codecov

codecov Bot commented Sep 1, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 98.66%. Comparing base (e52aeaa) to head (b3e1e77).

Additional details and impacted files
@@           Coverage Diff           @@
##           master     #480   +/-   ##
=======================================
  Coverage   98.66%   98.66%           
=======================================
  Files          45       45           
  Lines        3218     3218           
=======================================
  Hits         3175     3175           
  Misses         43       43           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@derek73
derek73 merged commit c34fb74 into master Sep 1, 2026
11 checks passed
@derek73
derek73 deleted the chore/open-the-2.3-cycle branch September 1, 2026 05:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

docs Documentation fixes and updates tooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant